显示标签为“Common Art”的博文。显示所有博文
显示标签为“Common Art”的博文。显示所有博文

2026年7月28日星期二

Common Art - Summer- Final Sprint


Introduction

This is the final sprint, since I have already finished almost everything, all I need to do is helping my teammate to fix the problem and try to make the water looks better! This is really hard to show in the blog.


Final Water








2026年7月14日星期二

Common Art - Summer- Sprint #5

 



Introduction

This sprint was slightly affected by illness. Fortunately, most of my assigned work had already been completed, so the overall impact was manageable. I also coordinated the integration with Rag and Jules, and the water effect has now been refined to a good state. The next step will likely be to sync with the lighting artist, as the scene currently appears somewhat too dark.

During this sprint, I also fixed a bug in the procedural sparkle effect: the sparkles were moving in an overly uniform and predictable pattern. This has now been corrected, and it turned out to be a minor issue.


Water



P4V






2026年6月30日星期二

Common Art - Summer- Sprint #4

 

Introduction

Since I was not assigned a new task for this sprint, this round focused on refining the result from the previous sprint and adding more detail. My current goal is to keep polishing the overall effect.


Water

Caustics

Compared with the last update, I found one issue in the water caustics: during certain moments, the effect would become noticeably brighter because of the opposing UV flow. I adjusted several parameters to prevent that brightness spike, and after the refinement the caustics now feel much smoother.


Waterfall

Splash


Before the last class, my main focus was researching VFX in Niagara. Since I have relatively little experience creating VFX, I spent some time studying the workflow. I have now created a splashing-water effect and added a simple mist layer. The current result already looks quite good, but I did not have time to build the scaling logic yet. I will decide whether to add that feature in the next sprint based on what the effect needs.


P4V



2026年6月17日星期三

Common Art - Summer- Sprint #3

 


General

Since I will soon return to China for an internship, this sprint also included many tasks that were originally planned for later sprints, so the overall team schedule would not be affected.

Building on the previous sprint, I fully completed the water material and waterfall effects.


Water

Caustics

The main idea was to use a fake caustics texture, which I created in Substance Designer.



I then sampled the texture using the XY coordinates of the world-space position reconstructed from depth. Since the water itself does not write to depth, I used the reconstructed world position from the scene depth to sample the caustics texture. By adding opposing UV flows, I was able to create a convincing underwater caustics effect.

The most difficult part was finding a reliable way to reconstruct world-space position from depth in UE5. Unreal and Unity handle this differently, so I spent quite a bit of time working through the problem.


Magic Spark



To better match the overall scene, I also added a subtle fake particle effect to the water. Our scene already has a fairly dense particle atmosphere, so this helped the water sit more naturally in the environment. The effect is made with two Perlin Noise textures flowing in opposite directions, followed by a Step operation.


Matcap

Although it may be hard to see clearly in the screenshots, I wanted the water to retain some ambient lighting in darker environments. UE's default physically based ambient lighting was too dark for this stylized water style, so I added a Matcap texture to provide a bit of extra environmental light.

Waterfall


Before starting the material work, I first quickly modeled a waterfall mesh plane in Blender. To keep the edges transparent, I painted vertex colors and used them as a simple mask for edge transparency.



The main body of the waterfall was built with a different approach from the water material. I did not use the Single Layer Water shading model here. A waterfall usually behaves more like a thin sheet, and it generally does not have enough depth variation to drive shallow-to-deep color changes in the same way as a water surface. Using Transparent Lit made the result more direct and easier to control.

The most important part of the waterfall is the foam. The core approach is UV flow, UV distortion, and applying Step operations to noise textures to create the flowing stripe patterns I wanted. The foam system mainly includes Main Foam, Detail Foam, Waterline, and Edge Foam. Edge Foam is generated around objects intersecting with the waterfall, and its logic is similar to shoreline waves: it is calculated based on the distance to the nearest surface.

I also added some Magic Spark to the waterfall, but with a different implementation. In this case, I baked the sparkle pattern into a texture and animated it with UV flow.

There is also a Waterfall Wave effect, which is a fake effect for the pool below the waterfall: a wave spreading outward from the impact area. The idea is quite similar to the other effects, using UV flow and UV distortion to manipulate noise and produce the final result.

The most time-consuming parts were parameter tuning and creating a large number of noise textures.



Final



P4V







2026年6月3日星期三

Common Art - Summer- Sprint #2

 

General

At the beginning of this sprint, we finalized the task distribution for the team.
My main responsibility on this cinematic project is to develop the water and waterfall systems.
I am also supporting Gabe S. by using Substance Designer to create several textures.
For this sprint, my primary focus is still the water work.
Since I was sick last week, I have been working hard this week to catch up with the schedule. At this point, I have completed the first version of the water shader/system.

Meetings and Documentation

At the beginning of this week, all of the Tech Art and 3D Art team members had a longer meeting to define the overall art style for the project. As a technical artist, one of my responsibilities was to help gather environment-related artist references.


Water

Since I am responsible for the water, I looked for several useful tutorials and breakdowns before starting development.
The most interesting reference I found was this one:
Stylized Water in UE5 Breakdown
This artist shared several techniques on X for creating stylized water in Unreal Engine.
His breakdown was very helpful for me.
He mentioned that he learned a lot from the following video, and I did as well:
How scrolling textures gave Super Mario Galaxy 2 its charm
This video explains many old-school water techniques used in Super Mario Galaxy. Even though these techniques are older, they are still valuable references today.
I recreated some of these ideas in Unreal. The current implementation is still simple, but after further refinement, some of these techniques should be useful for version 2 of my water system.

Because of the limited time for this version, my main goal was to establish the foundation and complete the basic rendering result.
The features and textures currently completed are:


Refraction and reflection effects 
Adjustable shallow/deep water control 
WPO waves + recalculated normals 
Stylized shoreline wave effect 
Water normal texture creation 
Foam noise texture creation 





The current water effect is partially compatible with Unreal's Water plugin. However, since the final environment will be built around an island, Unreal's official Water plugin may not always be the most convenient solution for our needs. Because of that, I implemented the wave motion using World Position Offset.
For the Gerstner wave implementation, I referenced this article.
Although the article is written for Unity, the logic can still be adapted to Unreal as long as the coordinate system differences are handled correctly. Unreal and Unity are both left-handed coordinate systems, but Unreal is Z-up while Unity is Y-up.

In the next version, I plan to start exploring:

Caustics effect
Sparkle/highlight effect
More stylized parameter controls

The goal is to push the water further toward a more stylized and cartoony look.


P4V




2026年5月17日星期日

Common Art - Summer- Sprint #1

 VFX

There were not many tasks assigned to the Technical Artists during this sprint. My first task was to make sure the VFX created last semester could run reliably in our project. I organized and moved the VFX into the project, simplified the exposed parameters, and improved the adjustment workflow so that all artists can quickly use the effect.





Master Materials

In addition, Raghavendra and I were responsible for creating the Master Materials. The basic Master Materials have now all been integrated into the project.



Emissive Breathing

After finishing the basic setup, I also worked on a special technical art experiment. I created a GPU-based timer that does not rely on CPU control, which makes it very performance-friendly, and integrated it into the emissive material. This allows artists to freely adjust the emissive breathing effect, including customizing the glow duration and the interval between glow cycles.




2026年2月26日星期四

Common Art - Spring - Lighting Workshop Module 3

 Final






Ref



Analysis + Creative process

My creative intent for this piece is actually not to make a heavily stylized environment. Instead, I want to create a natural, fresh atmosphere with a subtle sense of Chinese philosophy. For this “Lost Temple” scene, I’m aiming for an early-morning sunrise in a mountain ruin, when the mist hasn’t fully lifted yet. The fog won’t be exaggerated or overly stylized—I just want to convey a calm, everyday morning in a forgotten temple.

In the first image, I placed the entrance of the lost temple. Its worn-down, decayed state suggests that it’s an ancient place with no people around. The overall environment is relatively dark, but the brightness at the entrance is meant to draw the viewer’s attention—my goal is to guide the audience into the world of the scene through this inviting focal point.

In the second image, you can see a strong backlit setup. This is meant to communicate the time of day and the overall lighting condition of the environment. The third image reinforces what the first two are establishing: the ruined atmosphere and the sunrise timing.

The fourth image is the core shot. You can see that I didn’t add an overly dramatic top light to “glorify” the Buddha, because this is a damaged, weathered statue. I also don’t want the scene to feel overly artistic or theatrical. What I want to express is a sense of quiet plainness—despite the decay, the Buddha returns to simplicity and blends into the everyday world.

That said, I still tried to suggest a sense of sacredness, even if it’s subtle (because I don’t want it to be too exaggerated). I added a warmer rim light on the Buddha, and compositionally I framed the statue from the right looking toward the left. So in the lighting, I made a small deliberate choice: cooler light on the left side and warmer light on the right side, to hint at a gentle, warm radiance.


You can also see that I added fog to the environment. Unreal’s built-in fog effects couldn’t achieve the kind of sunrise atmosphere I wanted—where the mist hasn’t fully lifted yet—so I implemented my own volumetric fog to create that mood.





2025年12月1日星期一

Common Art - Week 15 - Final - 'A' Stage

 

Terrain Texture V2


Grass V2

Sand V2

Substance Designer GrassV2

Based on the feedback from Stage B, I reworked both the grass and sand materials.
For the sand, I mainly lowered the saturation and brightness so it wouldn’t look so yellow.
For the grass, I pushed the style further and basically rebuilt the material from scratch, which took quite a bit more time.

Combined with the new grass billboard setup I made later, the updated grass material now gives a very nice overall grass look.


The Modified Parts

Trees

Terrain Blending

At the same time, based on the previous feedback, I also corrected the trees on the ground.

Now each tree no longer points along the landscape normal, but instead points straight up.

Also following the last round of suggestions, I researched how to achieve terrain blending in Unreal.
This setup mainly uses Virtual Textures. To make the terrain blend, I use two textures:

  • One texture stores the landscape height.

  • One texture stores the landscape material.

Once I have these two pieces of information, in the trunk material I compare the world-space vertex Z value with the landscape height, then use triplanar mapping to sample the landscape texture.
This gives me the terrain–trunk blending effect.

Grass V2

The Reference "Sky"

Again, based on the Stage B feedback, I decided to rebuild our grass and switch to another approach.
This time I collected references from Sky (a game made by the same team as Journey) and recreated a similar grass look.

I implemented billboard grass (always facing the camera) together with a wind system, and they work well.
The wind effect feels very soft and pleasant: each clump of grass sways gently in a regular rhythm.

Since I also have access to the landscape color information, I added that into the grass as well.
For each grass pivot in world space, I sample the landscape color and use it to tint the blades, so every grass clump matches the color of the terrain under it.

Grass V2 Test

Apple Tree & Bushes


Apple Tree


Bushes

Finally, I also created an apple tree and some cute stylized bushes.
The apples on the tree use the same wind system as the leaves, so they also have a slight secondary motion and sway gently with the foliage.

The bushes are made almost the same way as the tree leaves, so I won’t repeat the process here.

P4V


2025年11月12日星期三

Common Art - Week 12 - First Bake - 'B' Stage

 

Stylized Sand & Fix Issues





This time, my main tasks were creating a Stylized Sand Terrain Texture and helping teammates resolve various technical issues—for example, sub-level streaming problems in Unreal. In collaborative project management, lots of small, unexpected issues always pop up, and as Tech Artists we need the problem-solving skills to keep the team moving forward. Overall, our team is making steady progress!


P4V ScreenShot




2025年11月5日星期三

Common Art - Week 11 - Initial Block Out - 'C' Stage

  

Tree V3


Because the previous tree version showed noticeable billboarding artifacts in dense clusters, this iteration focuses on mitigating the carded-leaf look.
The approach is straightforward: use the dot product between the original quad normal and the view vector—i.e., NV\mathbf{N} \cdot \mathbf{V}(equivalently, the angle between normal and view)—as a criterion to further cull/fade quads and reduce the artifact.

  

In the prior version I had already replaced the normals in Houdini with spherical normals. For this pass I modified the model again by baking the original per-face normals into vertex colors, so the shader can access both; this ultimately reduces the carding effect.


Skybox

I also integrated a dynamic skybox system for the project. In addition, several existing materials were minimally adjusted so they correctly respond to the day–night cycle.







Terrain Textures

Using Substance Designer, I authored stylized Grass and Dirt textures and applied them to the terrain materials.(The showcased stylized grass texture was the stone-included variant, but I removed the stones because they caused noticeable repetition/tiling on the terrain)








P4V ScreenShot:



2025年10月29日星期三

Common Art - Week 10 - Initial Block Out - 'D' Stage

 

Tree V2

In this iteration I integrated a Wind System for the trees (it’s the same wind that drives the grass). Compared to the grass setup, the hard part here was reliably writing each quad’s object-space pivot/origin into UV1 and UV2 in Houdini so the material can reconstruct per-card motion in Unreal. There’s little to no official documentation on this path, and Unreal’s mesh import precision/compression plus differences between DCCs in object-space and UV transforms made it mostly a black-box process—I had to validate each step empirically.

Thanks to Chris’s feedback on triangle count, I further reduced the tree mesh without visible quality loss, reaching a better quality balance.

Tree V2

Leaves Wind System

Water V2

For the new water pass I added depth-based color shifts, shoreline edge treatment and shallow-water waves, and a foam layer. I also revisited Unreal’s water documentation and adjusted several shading details to push a more stylized look that fits our game. The improvement over the previous version is obvious in motion.

Water V2

Implementation notes (TA):

  • Depth color: Driven by Unreal’s AbsorptionCoefficients combined with water depth to simulate wavelength-dependent attenuation.

  • Shoreline effects: Used DistanceToNearestSurface to measure distance from the water body to nearby Static Mesh geometry and gate the near-shore logic.

  • Shore waves: After deriving a ShoreRange, I generated ripples via a sine function—this part is mostly math and is cheap.

  • Foam: Layered on top of the shore waves using a noise-based dissolve mask to break up repetition.

Water Material V2

Rocks V1

I first built a Houdini procedural rock generator to get quick variety and consistent forms.

Rocks

Then I ported my baseline stylized lighting shader from Unity to Unreal. Small lighting trick for speed: since Unreal doesn’t easily allow multi-light accumulation in Unlit without pipeline changes, I switched to Lit and split the final shading between Emissive and Base Color. By scaling each output with coefficients that sum to 1.0, I can approximate multi-light influence with minimal look drift and keep iteration fast.

Rocks Material

Rocks V1